In computer science, a virtual machine (VM) is a portion of software that, when executed on appropriate hardware, creates an environment allowing the virtualization of an actual physical computer system. Each VM may function as a self-contained platform, running its own operating system (OS) and software applications (processes). Typically, a virtual machine monitor (VMM) manages allocation and virtualization of computer resources and performs context switching, as may be necessary, to cycle between various VMs.
A host machine (e.g., computer or server) is typically enabled to simultaneously run multiple VMs, where each VM may be used by a remote client. The host machine allocates a certain amount of the host's resources to each of the VMs. Each VM is then able to use the allocated resources to execute applications, including operating systems known as guest operating systems. The VMM virtualizes the underlying hardware of the host machine or emulates hardware devices, making the use of the VM transparent to the guest operating system or the remote client that uses the VM.
Recently, solutions providing centralized hosting for VMs that run (virtual) desktops have been developed. Such solutions consist of centralized servers that are partitioned into multiple VMs that host the virtual desktops, thereby providing a desktop for each user. The centralized hosting provides the manageability of sever-based computing, while the dedicated environment provides the flexibility and compatibility with applications that a desktop enables. In general, VMs therefore enable remote access to a host or server computer by a remote client computer, which mimics or reconstructs the events taking place on the host computer.
However, one problem that arises with such centralized hosting of VMs is handling the upgrade process. There are many components involved in upgrading a VM system, such as the platform of the system and the VMs themselves. Presently, upgrade solutions for VM systems require each VM to be shut down and migrated to a different host, resulting in an interruption to the VM service for an end user of the VM. In addition, present solutions for upgrading individual VMs expose the VMs to potential security risks, such as being commandeered via the upgrade process by another user. As such, a solution for managing upgrades of a VM system that provides improved security and does not interrupt the VMs would be beneficial.